1. Technical Field
The present application generally relates to intra-prediction in video encoders and video decoders and, more specifically, to hardware implementations of intra-prediction using pipelining techniques.
2. Related Art
Video codecs, such as those used in High Efficiency Video Coding (HEVC), incorporate a variety of techniques to compress video for use in mobile devices, smart TVs, and many other video applications. One such technique is intra-prediction, which takes advantage of spatial redundancies within a video frame to reduce the file size and/or bandwidth required for video streaming.
A video frame is generally segmented into blocks of pixels, and a given block is often highly correlated with the blocks and pixels immediately around it. Accordingly, the pixels within a block can be interpolated from neighbor pixels that have already been calculated. The nature of the dependency may be stored as an intra-prediction mode. Once the intra-prediction mode is determined, only the differences (e.g., residuals) between the interpolated pixels and the actual pixels need to be encoded. These residuals are encoded in subsequent processing stages, which include a discrete cosine transformation (DCT), quantization, and entropy coding. By taking spatial redundancy into account, intra-prediction can greatly increase the overall compression ratio.
In HEVC, some reference frames (e.g., intra-coded pictures or I-frames) are encoded and decoded entirely by intra-prediction (as opposed to inter-prediction). Reference frames may comprise a plurality of coding units (CU), and each CU may be divided into transform units (TU) of size M×M. The CU may be further divided into coding blocks (CB) which may be associated with chroma or luma information. Similarly, the TUs may be divided into transform blocks (TB). Intra-prediction modes may be computationally applied at a TB level.
The HEVC standard dictates that 4M+1 neighbor pixels may be used to perform the intra-prediction, and these neighbor pixels must therefore be padded, filtered, and potentially conditioned in other ways before intra-prediction for a given block (e.g., TU) begins. After the intra-prediction of the block is completed, the intra-prediction of the next block begins. The two blocks may be processed sequentially, because intra-prediction of the second block may generally depend upon reconstructed pixels derived from the intra-prediction of the first block and/or of other previously calculated blocks. Thus, the HEVC standard inherently requires a degree of sequential processing of each block at this stage, which is true for many other video standards as well.